/**
 * 错误处理工具函数
 */

/**
 * 捕获并处理API请求错误，但不抛出异常
 * @param {Error} error 捕获的错误对象
 * @param {string} fallbackMessage 默认的错误消息
 * @param {function} logger 日志函数，默认为console.error
 */
export const handleApiError = (error, fallbackMessage = '操作失败', logger = console.error) => {
  const errorMessage = error?.response?.data?.message || fallbackMessage
  logger(errorMessage, error)
  return { success: false, message: errorMessage }
}

/**
 * 创建一个包装函数，自动处理Promise异常但不抛出
 * @param {function} asyncFunction 异步函数
 * @param {string} fallbackMessage 默认的错误消息
 * @returns {function} 包装后的函数
 */
export const withErrorHandling = (asyncFunction, fallbackMessage = '操作失败') => {
  return async (...args) => {
    try {
      return await asyncFunction(...args)
    } catch (error) {
      return handleApiError(error, fallbackMessage)
    }
  }
}

/**
 * 创建一个忽略错误的Promise函数
 * @param {function} asyncFunction 异步函数
 * @returns {function} 包装后的函数
 */
export const ignoreError = (asyncFunction) => {
  return async (...args) => {
    try {
      return await asyncFunction(...args)
    } catch (error) {
      console.error('操作过程中发生错误，已忽略', error)
      return null
    }
  }
}
